The occurrence of an error event (e.g., an application failure) during the execution of an application by an end-user is highly undesirable. In particular, such an occurrence will lead to reduced user satisfaction in the application, reduced user confidence in the vendor, and could lead to loss of data. As a result, it is highly desirable to extensively test an application during development to help reduce the likelihood of the occurrence of an error event after the application is released.
However, effectively testing an application can pose significant obstacles. In particular, it is often difficult to reproduce an error event. For example, the error event may occur after the user has been executing the application for a lengthy time period and performed numerous actions. In this case, the user may have a difficult time remembering all the steps to recreate the error event. Further, even when the user can reproduce the scenario, there may be only a particular set of actions used in a specific context that can generate the error event.
Several approaches seek to address the desire to recreate and/or analyze the execution of an application prior to the occurrence of an error event. For example, in several approaches, data on the application execution, such as Windows event notifications (Windows is a trademark of Microsoft Corporation in the United States, other countries, or both) is logged and used to play back user actions. Alternatively, several approaches log data on the code that was executed leading up to the error event. For example, an application can log error messages during execution. The logged data can include a time when the error event occurred, a stack trace, and/or some other information that locates a line of code that generated the error event as well as a series of function calls and/or the like that led up to the line of code being executed.